Ext.define('KMA.view.forms.PlatosArmados',{
    extend: 'Ext.form.FieldSet',
    alias: 'widget.filtroselecciones',
    
    initComponent: function(){
        
        var niveles = Ext.create('KMA.store.combos.Niveles',{});
        var submenues = Ext.create('KMA.store.combos.Submenues',{});
        
        this.style = 'background-color: #dfe9f6';
        this.title = 'Filtro';
       this.items = [
            {xtype: 'datefield', id: 'fecha', name: 'fecha', fieldLabel: 'Fecha', labelAlign: 'top', format: 'Y-m-d', allowBlank: false},
            {xtype: 'combo', id: 'nivel', name: 'nivel', fieldLabel: 'Nivel', labelAlign: 'top', store: niveles, queryMode: 'local', editable: false, displayField: 'nivel', valueField: 'id', allowBlank: false },
            {xtype: 'combo', id: 'tiposubmenu', name: 'tiposubmenu', fieldLabel: 'Submenu', labelAlign: 'top', store: submenues, queryMode: 'local', editable: false, displayField: 'tiposubmenu', valueField: 'id', allowBlank: false},
            {xtype: 'checkboxgroup',id: 'chkgrp-platos',fieldLabel: 'Platos',labelAlign: 'top',
             allowBlank: false,columns: 2,vertical: true,items: [
                // Cargados a mano, es información identica a la DB
                {boxLabel: 'Entrada', name: 'plato-entrada', inputValue: 1},
                {boxLabel: 'Principal', name: 'plato-principal', inputValue: 2},
                {boxLabel: 'Postre', name: 'plato-postre', inputValue: 3},
                {boxLabel: 'Alimento', name: 'plato-alimento', inputValue: 4},
                {boxLabel: 'Infusion', name: 'plato-infusion', inputValue: 5},
                {boxLabel: 'Acompaña', name: 'plato-acompania', inputValue: 7}
             ]
            },
            // Este campo debera ser oculto y el usuario no debera poder modificarlo.
            // Cumple el fin de guardar el id del menu diario y los platos seleccionados, para refrescar la segunda grid
            {xtype: 'hiddenfield', id: 'transCode', name: 'transCode', allowBlank: true},
            {xtype: 'button', text: 'Filtrar', action: 'filtrarSelecciones', width: 100, style: 'margin-left: 40px ', iconCls: 'ico-search'},
            {xtype: 'button', text: 'Limpiar', action: 'limpiarFormulario', width: 100, style: 'margin-left: 40px; margin-top: 5px ' }
        ]
      
        this.callParent(arguments);
    },
    aplicarFiltrado: function(){
        var me = this;
        Ext.Ajax.request({
            method: 'POST',
            url: 'src/Drivers/PlatosArmados/',
            params: {
                fecha: me.getFecha(),
                nivel: me.getNivel(),
                tiposubmenu: me.getTipoSubmenu(),
                platos: me.getPlatos()
            },
            success: function(response){
                me.successHandler(response);
                
            }
        });
    },
    getFecha: function(){
        return this.getChildByElement('fecha').getValue();
    },
    getNivel: function(){
        return this.getChildByElement('nivel').getValue();
    },
    getTipoSubmenu: function(){
        return this.getChildByElement('tiposubmenu').getValue();
    },
    getPlatos: function(){
        var platos = "";
        this.getChildByElement('chkgrp-platos').getChecked().forEach(function(chk){
            platos = platos+chk.inputValue+",";
        });
        return platos;
    },            
    successHandler: function(respuesta){
        var re = Ext.JSON.decode(respuesta.responseText);
        if(re.success){
            this.setTransCode(re.transCode);
            this.applyResult(re.title);
        }else{
            this.showError(re.msg);
        }
    },
    setTransCode: function(aStr){
        this.getChildByElement('transCode').setValue(aStr);
    },
    showError: function(aStr){
        Ext.create('KMA.view.environment.Error',{
            titulo: "Seleccion de platos",
            txt: aStr
        }).showDialog();
    },
    applyResult: function(aStr){
        var grid = Ext.create('KMA.view.grids.PlatosArmados',{});
        grid.setTitle(aStr);
        grid.getStore().load();
        var zone = this.up().up().getComponent('insertGridPlatosArmadosHere');
        zone.update('');
        zone.removeAll();
        zone.add(grid);
        zone.doLayout();
    }
});
